Cell based data processing

ABSTRACT

A data processing program is specified using a specification having a number of cell specifications specifying a number of data processing cells, with each data processing cell having a formula specifying an action or a computation. A cell may have one or more attributes referencing other cells. A cell formula may reference a value of another cell or be executed conditionally. In one embodiment, one of the cell is reserved as an output cell specifying the output, and a mnemonic is reserved for providing input to the specified data processing. An execution analyzer is provided to analyze the data processing specification, and identify the execution order of the cells. Further, an execution engine is provided to effectuate the specified data processing by executing the specified actions/computations of the cells in accordance with the determined execution order.

RELATED APPLICATIONS

[0001] This non-provisional application is related to and claimspriority to provisional application No. 60/246,915, entitled “A DataProcessing Method Employing Cell Based Data Flow Description”, filed onNov. 10, 2000, which is hereby fully incorporated by reference.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates to the field of data processing.More specifically, the present invention relates data processingspecification and execution.

[0004] 2. Background Information

[0005] Ever since the invention of the first computer, computerscientists have continuously tried to improve the productivity ofprogrammers, such that more applications can be developed to takeadvantage of the continuous advancements being made in the art ofcomputer and related technologies. First assembler languages weredeveloped to replace machine languages. Then, high level languages, suchas FORTRAN, COBOL, PL/I and so forth, were developed to further improvethe productivity of programmers. Development of high level languageswere followed by structured languages such as Pascal and C, and thenobject oriented programming languages such as C++. To facilitatedevelopment of the Internet and the World Wide Web, “new” languages suchas the Hypertext Markup Language (HTML), Java, Javascript, Perl and CGIwere developed.

[0006] While great strides had been made in the past decades,advancements in integrated circuit, computer architecture,telecommunication and networking technology continue to outpace theproductivity improvement of the programming community. Applicationdevelopment remains substantially a bottleneck to the introduction andapplication of the latest computer and related technology advancements.Notwithstanding the development of “power user” type of applicationdevelopment languages/facilities, such as Visual Basic, and thecontinuing improvement and extension to the more traditional languages,a need still exist for a more user friendly way in development dataprocessing applications, for the more average, non-advanced users.

SUMMARY OF THE INVENTION

[0007] In accordance with the present invention, a data processingprogram is specified by way of a specification having a number of cellspecifications specifying a number of data processing cells, with eachdata processing cell having a formula specifying an action or acomputation. A cell may have one or more attributes referencing othercells. A cell formula may also reference a value of another cell or beexecuted conditionally.

[0008] In one embodiment, one of the cells is reserved as an output cellspecifying the output, and a mnemonic is reserved for providing input tothe specified data processing.

[0009] In one embodiment, an execution analyzer is provided to analyzethe data processing specification, and identify the execution order ofthe cells. Further, an execution engine is provided to effectuate thespecified data processing by executing the specifiedactions/computations of the cells in accordance with the determinedexecution order.

BRIEF DESCRIPTION OF DRAWINGS

[0010] The present invention will be described by way of exemplaryembodiments, but not limitations, illustrated in the accompanyingdrawings in which like references denote similar elements, and in which:

[0011]FIG. 1 illustrates an overview of the x-sheet data processingspecification of the present invention, including the x-sheet executionanalyzer and the x-sheet execution engine of the present invention, inaccordance with one embodiment;

[0012]FIG. 2 illustrates the relevant operational flow of the x-sheetexecution analyzer of FIG. 1, in accordance with one embodiment;

[0013]FIGS. 3a-3 b illustrate a graphical representation of an exampleexecution flow, and an example data structure suitable for use torepresent the example execution flow;

[0014]FIG. 4 illustrates the relevant operational flow of the x-sheetexecution engine of FIG. 1, in accordance with one embodiment; and

[0015]FIG. 5 illustrates a computer system suitable for use to practicethe present invention, in accordance with one embodiment.

DETAILED DESCRIPTION OF THE INVENTION

[0016] In the following description, various aspects of the presentinvention will be described. However, it will be apparent to thoseskilled in the art that the present invention may be practiced with onlysome or all aspects of the present invention. For purposes ofexplanation, specific numbers, materials and configurations are setforth in order to provide a thorough understanding of the presentinvention. However, it will also be apparent to one skilled in the artthat the present invention may be practiced without the specificdetails. In other instances, well known features are omitted orsimplified in order not to obscure the present invention.

[0017] Parts of the description will be presented in terms of operationsperformed by a computer system, using terms such as data, values, tags,references, and the like, consistent with the manner commonly employedby those skilled in the art to convey the substance of their work toothers skilled in the art. As well understood by those skilled in theart, these quantities take the form of electrical, magnetic, or opticalsignals capable of being stored, transferred, combined, and otherwisemanipulated through mechanical and electrical components of the computersystem; and the term computer system include general purpose as well asspecial purpose data processing machines, systems, and the like, thatare standalone, adjunct or embedded.

[0018] Various operations will be described as multiple discrete stepsin turn, in a manner that is most helpful in understanding the presentinvention, however, the order of description should not be construed asto imply that these operations are necessarily order dependent. Inparticular, these operations need not be performed in the order ofpresentation.

Overview

[0019] Referring now FIG. 1, wherein a block diagram illustrating anoverview of the x-sheet data processing specification of the presentinvention, including a x-sheet execution analyzer and a x-sheetexecution engine of the present invention, in accordance with oneembodiment. In accordance with the present invention, x-sheets 102(pronounced “cross sheets”) are advantageously employed to specify dataprocessing programs. As illustrated, each x-sheet 102 includes a numberof x-cells 104 (pronounced “cross cells”), with each x-cell 104including one or more formulas 110, and each formula 110 specifying anaction or a computation to be performed (when the x-cell is executed).Each x-cell 104 may include one or more attributes 108 referencing otherx-cells 104. Similarly, each formula 110 may also reference values ofother x-cells 104. In other words, from at least the execution point ofview, x-cells 104 may be inter-dependent or interlocked with one other,thus the name “x-cell” and “x-sheet”.

[0020] As illustrated, for the embodiment, a x-sheet execution analyzer122 is also advantageously provided to analyze the x-sheets 102, inparticular, determining the execution flow of their x-cells 104,“documenting” the flows in execution flow descriptions 132. Further, ax-sheet execution engine 124 is provided to execute the x-cells 104 inaccordance with the determined execution flow.

[0021] As a result, data processing operations may be advantageouslyspecified and effectuated in a much more user friendly manner. Theseelements, x-sheet 102, x-cell 104, execution analyzer 122, executionflow description 132, execution engine 124, and the manner they relate,interact and/or cooperate with each, will be described in further detailin turn below.

X-Sheet and X-Cells

[0022] Turning now first to x-sheets 102 and x-cells 104 of the presentinvention, and still referring to FIG. 1, as described earlier, eachx-sheet 102 is employed to specify a data processing program, includinga number of x-cells 104, with each x-cell 104 specifying an action or acomputation to be performed. Through their references to each other, viatheir attributes or their formulas, x-cells 104 are inter-dependent orinterlocked with one other.

[0023] In one embodiment, x-cells 104 are delineated by beginning andending x-cell tags, such as <x:xcell> and </x:xcell>, similar to tagsemployed by HTML and XML data structures (for familiarity purpose).Further, each x-cell 104 is uniquely named using a “name” attribute. Oneof the x-cells 104 is reserved as the output cell for outputting theresult or results of the specified data processing. Consider thefollowing example x-sheet, <x:xsheet> <x:xcell name=“preferences”><mydata> <favoritecolor>red</favoritecolor><favoritetoy>ballon</favoritetoy> </mydata> </x:xcell> <x:output> <x:value-of select=“$preferences/mydata/favoritecolor”/> <x: value-ofselect=“$preferences/mydata/favoritetoy”/> </x:output> </x:xsheet>

[0024] In the above example, the example x-sheet includes two x-cells.The first x-cell is named “preferences”, whereas the second is thereserved “output” x-cell. X-cell “preferences” includes two formulas,one specifying a constant, “red” (as the favorite color), and the otherspecifying a constant “balloon” (as the favorite toy). The output x-cellalso includes two formulas, specifying two output actions andreferencing the values of x-cell “preferences” (i.e. the favorite colorconstant and the favorite toy constant). Accordingly, when executed,x-cell “preferences” is executed first, creating the constant values“red” and “balloon”, and then the output x-cell is executed, outputtingthe string “red balloon”. [The use of a formula to reference values ofother x-cells, and the meaning of the expressions “value of” as well as“select” will be further described later.]

[0025] As described earlier, in addition to the formulas 110 of x-cells104 being able to reference values of the x-cells 104, the x-cells 104themselves, via attributes 108, may also reference the other x-cells.More specifically, a special “use” attribute is reserved for suchpurpose. Consider the following example x-sheet, <x:xsheet> <x:xcellname=“calculate” uses=“$action $setup”> <something/> </x:xcell> <x:xcellname=“action” uses=“$init”> <another/> </x:xcell> <x:xcell name=“setup”><x:value-of select=“$init/yetanother”/> </x:xcell> <x:xcell name=”init”><yetanother/> </x:xcell> etc. </x:xsheet>

[0026] In this example, the “setup” x-cell refers to the “init” x-cell,and the “calculate” x-cell, via its “uses” attributes, refers to the“action” and “setup” x-cells. Accordingly, the “setup” x-cell” will beexecuted after the “init” x-cell. Similarly, the “calculate” x-cell withbe executed after “setup” x-cell as well as the “action” x-cell. [Therelative order between the “action” x-cell and the “setup” x-cell isconsidered “undefined”.]

[0027] Additionally, in support of development of Internet applications,an x-cell, the “header” x-cell, is reserved for the specification of the“meta data”, such as defining Java functions used by other x-cells,defining caching policies for the data processing specification,defining user authentication information, editing state, and so forth.An example “header” x-cell may be specified as follows: <x:headername=”coolsheet”> <lastmod>August 19, 2000</lastmod> <editstate><cursorpos>4</cursorpo> <windowsize> <width>1432</lwidth><height>323</height> </windowsize> </editstate> </x:header>

[0028] Further, a “process-content” attribute, set to either“true/false”, is supported to facilitate specification of the manner inwhich an HTTP request is to be processed. Such a request may be receivedwhen a x-sheet is hosted as a servlet. In one embodiment, when theattribute is not specified or set to “false”, a HTTP request is read andconverted to XML on behalf of the x-sheet. However, if the“process-content” attribute is set to “true”, the input is left in theCGU-style format, allowing the x-sheet to read the body of the HTTPrequest itself.

[0029] In summary, x-cell elements are children of a x-sheet element.Each x-cell element has a name attribute uniquely naming the x-cell. Thenames “output” and “header” are reserved. Each x-cell may also have oneor more attributes, including a use attribute referencing other x-cells.

X-Cell Formulas

[0030] Turning now to x-cell formulas 110 of the present invention, andstill referring to FIG. 1, as described earlier, each x-cell formula 110is employed to specify an action or computation. As illustrated, atleast one mnemonic (e.g. $input) 112 is reserved for providing input tothe specified data processing. Further, a number of “operator” elementsare supported to facilitate specification of the actions orcomputations. In one embodiment, the operator elements include:

[0031] select

[0032] value of

[0033] content of

[0034] copy of

[0035] if

[0036] for

[0037] The “select” element

[0038] Each “select” element has a path, and is used to select a portionof an inner value of the path. As illustrated in some of the earlierexamples, the path may point to another x-cell. Consider the followingexample

[0039] <x:output>

[0040] The authority is: <myfunc:currentuser x:select=“user/authority”/>

[0041] </x:output>

[0042] In this example, assuming “user” is an XML record with“authority” set to “supervisor”, the output of the example would be

[0043] The authority is: supervisor

[0044] The “value of” element

[0045] Each “value-of” element also has a path, and is used to producetext results from the path specified by the select attribute. As alsoillustrated in some of the earlier examples, the path may point toanother x-cell. Consider the following example

[0046] <x:value-of select=“$input/parameters/record”/>

[0047] In this example, assuming also “parameter” is an XML record with“record” having “first” and “last” elements set to “John” and “Doe”, theoutput of the example would be

[0048] JohnDoe.

[0049] The “content of” element

[0050] Each “content-of” element also has a path, and is used to produceXML results from the path specified by the select attribute. Similar tothe value-of and select attributes, the path may point to anotherx-cell. Consider the earlier example again

[0051] <x:content-of select=“$input/parameters/record”/>

[0052] Assuming again “parameter” is an XML record with “record” having“first” and “last” elements set to “John” and “Doe”, the output of theexample would be

[0053] <first>John</first>

[0054] <last>Doe</lase>.

[0055] In other words, the difference between “value-of” and“content-of” is that in the earlier case, the delimiters or tags areremoved, whereas in the later case, they are not removed.

[0056] The “copy of” element

[0057] Each “copy-of” element also has a path, and is used to produce anode set from the path specified by the select attribute. Also similarto the earlier described attributes, the path may point to anotherx-cell. Consider the example

[0058] <x:copy-of select=“$input/parameters/record”/>

[0059] In this example, all the records delineated between the“parameter” tags, i.e. <parameter> . . . </parameter> are output, whichmay be <record> <first>John</first> <last>Doe</last> </record>  <record><first>Jane</first> <last>Doe</last> </record>

[0060] assuming these “records” are contents of the input “parameters”.

[0061] The “if” element

[0062] The “if” element is used to perform a single Boolean test,causing either a <x:then> or a <x:else> section to be executed dependingon the result of the test (naturally, the <x:then> section is executedif the test is true, and the <x:else> section is executed if the test isfalse). Consider the following example <x:if>  <x:testx:select=“./actual = ./submitted”>   <actual><x:value-ofselect=“$realpassword”/></actual>   <submitted><x:value-ofselect=“$typedpassword”/></submitted>  </x:test>  <x:then>  <message>Right password! Welcome to the secret area.</message>  <result>ok</result>  </x:then>  <x:else>   <message>Sorry! Onlymembers allowed.</message>   <result>reject</result>  </x:else> </x:if>

[0063] In this example, the contents of the <x:test> section isevaluated. The result is a document fragment containing the elements<actual> and <submitted> with some values inside them. The local path inthe “x:select” attribute on the <x:text> element is executed in thecontext of the document fragment result of the test. The result of thepath is casted to a path Boolean. Lastly, if the Boolean result wastrue, the <x:then> section is evaluated and its contents become thevalue of the <x:if>. If the Boolean result was false, the <x:else>section is evaluated and its contents become the value of the <x:if>.

[0064] The “for” element

[0065] The “or” element is used to facilitate iteration over a list ofnodes. Consider the following example <x:for var=”rec”> <x:eachx:select=“record”> <record><first>John</first><last>Doe</last></record><record><first>Jane</first><last>Doe</last></record> </x:each> <x:do><log:output> <message>Hello <x:value-of select=”$rec/first”/></message></log:output> </x:do> </x:for>

[0066] In this example, the contents of the <x:eah> section is evaluatedfirst. If a “x:select” attribute is present, it is evaluated and itsresult is interpreted as a node list (i.e. not a single node). In thiscase, the node list has two nodes: the two <record> elements. The name“$rec” is bound to each of the nodes in the list, beginning with thefirst. If the name shadows other name that is in scope, it is an error.That is, if there is a <x:xcell> names “rec” or and out <x:for> using avariable called “rec”, an error will be signaled. If no error, for eachof nodes in the list, the contents of the <x:do> section is evaluatedonce. The value of the <x:for> if the document fragment containing theconcatenated values of all the evaluated <x:do> sections. Outside the<x:for>, the variable <$rec> is meaningless, and any reference would besignaled as an error.

X-sheet Execution Analyzer

[0067] As described earlier, a x-sheet execution analyzer is provided toparse and analyze an x-sheet to determine the execution flow of thex-cells. FIG. 2 illustrates the operational flow of the relevant aspectsof x-sheet execution analyzer 122 in accordance with one embodiment,whereas FIGS. 3a-3 b illustrate a graphical representation of an exampleexecution flow, and an example data structure for representing theexecution flow.

[0068] As illustrated, upon invocation, i.e. provided with an x-sheetfor analysis, analyzer 122 would locate the next cell, block 202. Recallthat in one embodiment, each x-cell is delineated by beginning andending x-cell tags. Locating these tags may be accomplished using anyoneof a number of parsing techniques known in the compiler art. Uponlocating the next x-cell, analyzer 122 would determine if the locatedx-cell references other x-cells, either by way of the “use” attribute,or by virtue of its formulas, block 204. Similarly, detection of thepresent of certain attributes and syntactical elements may beaccomplished using any syntax analysis techniques known in the compilerart.

[0069] Next, for the illustrated embodiment, upon determining the“interdependency” of the x-cell being analyzed with other x-cells, theinterdependency information are output, block 206. In one embodiment,the interdependency information are maintained by way of a directedgraph (logically speaking) [see e.g. FIG. 3a.]. The data associated withthe nodes and arcs of the logical graphic representations may be storedin any one of a number of suitable data structures known in the art,e.g. the tabular data structure illustrated in FIG. 3b.

[0070] Thereafter, analyzer 122 determines if additional x-cells arepresent and to be analyzed, block 208. If additional x-cells are presentand to be analyzed, the process continues back at block 202. On theother hand, if all x-cells have been analyzed, the cumulatedinterdependency information are ordered, block 210, and then output asexecution flow 132, block 212.

X-sheet Execution Engine

[0071] As described earlier, a x-sheet execution engine is provided toexecute the x-sheets in accordance with their determined executionflows. FIG. 4 illustrates the operational flow of the relevant aspectsof x-sheet execution engine 124 in accordance with one embodiment.

[0072] As illustrated, upon invocation, i.e. provided with an analyzedx-sheet for execution, execution engine 124 would locate the first cellto be evaluated, as described by execution flow 132, block 402. Uponidentifying the first x-cell to be evaluated, execution engine 124proceeds to evaluate or facilitate to have the formulas evaluated, block404. The formulas are evaluated in accordance with the semantic meaningof the formula elements (i.e. x:select, x:value-of, x:content-of,x:copy-of and so forth), as described above. Evaluation of the thesesupported elements in accordance with their semantic meanings maysimilarly be accomplished using any one of a number of techniques knownin the art for executing like kinds of elements in other languages.

[0073] After evaluating the first x-cell, execution engine 124 proceedsto determine if additional x-cells are to be executed, again inaccordance with execution flow 132, block 406. If additional x-cells areto be executed, execution engine 124 “loads” the next x-cell forevaluations, block 408. From block 408, the process returns back toblock 404. On the other hand, if all x-cells have been evaluated, theprocess terminates.

Example Computer System

[0074]FIG. 5 illustrates a computer system suitable for use to practicethe present invention, in accordance with one embodiment. As shown,computer system 500 includes one or more processors 502 and systemmemory 504. Additionally, computer system 500 includes mass storagedevices 506 (such as diskette, hard drive, CDROM and so forth),input/output devices 508 (such as keyboard, cursor control and so forth)and communication interfaces 510 (such as network interface cards,modems and so forth). The elements are coupled to each other via systembus 512, which represents one or more buses. In the case of multiplebuses, they are bridged by one or more bus bridges (not shown). Each ofthese elements performs its conventional functions known in the art. Inparticular, system memory 504 and mass storage 506 are employed to storea working copy and a permanent copy of the programming instructionsimplementing the x-sheet data processing specifications, and theirexecution analyzer and engine. The permanent copy of the programminginstructions may be loaded into mass storage 506 in the factory, or inthe field, as described earlier, through a distribution medium (notshown) or through communication interface 510 (from a distributionserver (not shown). The constitution of these elements 502-512 areknown, and accordingly will not be further described.

Conclusion and Epilogue

[0075] Thus, it can be seen from the above descriptions, a novel methodand apparatus for specifying data processing, and effectuating thespecified data processing have been described. While the presentinvention has been described in terms of the above illustratedembodiments, those skilled in the art will recognize that the inventionis not limited to the embodiments described. The present invention canbe practiced with modification and alteration within the spirit andscope of the appended claims. For examples, the present invention may bepracticed with or without reserved output cells, input mnemonics, etc.The description is thus to be regarded as illustrative instead ofrestrictive on the present invention.

What is claimed is:
 1. A method of computing comprising: analyzing adata processing specification having a plurality data processing cellspecifications with each data processing cell specification containing aformula specifying an action or computation; determining execution orderof said actions/computations specified by said data processing cellspecifications; and effectuating the data processing specified by thedata processing specification in accordance with the determinedexecution order of said actions/computations specified by said dataprocessing cell specifications.
 2. The method of claim 1, wherein eachof said data processing cell specifications is delineated by a beginningand an ending data processing cell specification tag.
 3. The method ofclaim 1, wherein said data processing cell specifications comprise afirst and a second data processing cell specification with the secondcell data processing specification having a formula referencing a valueof said first data processing cell specification.
 4. The method of claim1, wherein one or more of said data processing cell specificationscomprise one or more attribute specifications specifying one or moreattributes of the data processing cell specifications.
 5. The method ofclaim 4, wherein said data processing cell specifications comprise afirst and a second data processing cell specification with the secondcell data processing specification having an attribute referencing saidfirst data processing cell specification.
 6. The method of claim 1,wherein a first of said data processing cell specification comprises areserved mnemonic for providing input to the data processing specifiedby the data processing specification.
 7. The method of claim 1, whereina first of said data processing cell specification is a reserved outputcell specification specifying output of the data processing specified bythe data processing specification.
 8. The method of claim 1, wherein afirst of said data processing cell specification comprises aconditionally executed formula.
 9. The method of claim 1, wherein saiddata processing specification further includes one or more globalattributes specifying one or more global processing characteristics forthe specified data processing.
 10. The method of claim 9, wherein saidone or more global attributes include a global attribute specifying aformat for providing the specified data processing with an HTTP request.11. An apparatus comprising: at least one storage unit having storedthereon programming instructions designed to analyze a data processingspecification having a plurality data processing cell specificationswith each data processing cell specification containing a formulaspecifying an action or computation, determine execution order of saidactions/computations specified by said data processing cellspecifications, and effectuate the data processing specified by the dataprocessing specification in accordance with the determined executionorder of said actions/computations specified by said data processingcell specifications; and at least one processor coupled to said at leastone storage unit to execute said programming instructions.
 12. Theapparatus of claim 11, wherein the programming instructions are designedto recognize delineation of each of said data processing cellspecifications by a beginning and an ending data processing cellspecification tag.
 13. The apparatus of claim 11, wherein saidprogramming instructions are designed to support a first of said dataprocessing cell specifications having a formula referencing a value of asecond of said data processing cell specifications.
 14. The apparatus ofclaim 11, wherein said programming instructions are designed to supportone or more of said data processing cell specifications having one ormore attribute specifications specifying one or more attributes of thedata processing cell specifications.
 15. The apparatus of claim 14,wherein said programming instructions are designed to support said dataprocessing cell specifications having a first and a second dataprocessing cell specification with the second cell data processingspecification having an attribute referencing said first data processingcell specification.
 16. The apparatus of claim 11, wherein saidprogramming instructions are designed to support a first of said dataprocessing cell specification having a reserved mnemonic forfacilitating provision of input to the data processing specified by thedata processing specification.
 17. The apparatus of claim 11, whereinsaid programming instructions are designed to support a first of saiddata processing cell specification being a reserved output cellspecification specifying output of the data processing specified by thedata processing specification.
 18. The apparatus of claim 11, whereinsaid programming instructions are designed to support a first of saiddata processing cell specification having a conditionally executedformula.
 19. The apparatus of claim 11, wherein said programminginstructions are designed to support said data processing specificationhaving one or more global attributes specifying one or more globalprocessing characteristics for the specified data processing.
 20. Theapparatus of claim 19, wherein said programming instructions aredesigned to support one of said one or more of global attributes being aglobal attribute specifying a format for providing the specified dataprocessing with an HTTP request.
 21. An apparatus comprising: means foranalyzing a data processing specification having a plurality dataprocessing cell specifications with each data processing cellspecification containing a formula specifying an action or computation;means for determining execution order of said actions/computationsspecified by said data processing cell specifications; and means foreffectuating the data processing specified by the data processingspecification in accordance with the determined execution order of saidactions/computations specified by said data processing cellspecifications.